<!DOCTYPE html>
<html>
<head><meta name="generator" content="Hexo 3.8.0">
  <meta charset="utf-8">
  
  

  
  
  
  
  
  
  <title>Suwen</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta property="og:type" content="website">
<meta property="og:title" content="Suwen">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="Suwen">
<meta property="og:locale" content="CHS">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Suwen">
  
  
    <link rel="icon" href="/css/images/favicon.ico">
  
  <link rel="stylesheet" href="/css/style.css">
  

  
  <!-- baidu webmaster push -->
  <script src="//push.zhanzhang.baidu.com/push.js"></script>
</head></html>
<body class="home blog custom-background custom-font-enabled single-author">
  <div id="page" class="hfeed site">
      <header id="masthead" class="site-header" role="banner">
    <hgroup>
      <h1 class="site-title">
        <a href="/" title="Suwen" rel="home">Suwen</a>
      </h1>
      
        <h2 class="site-description">
          <a href="/" id="subtitle">never settle</a>
        </h2>
      
    </hgroup>

    <nav id="site-navigation" class="main-navigation" role="navigation">
            <button class="menu-toggle">菜单</button>
            <a class="assistive-text" href="/#content" title="跳至内容">跳至内容</a><!--TODO-->
            <div class="menu-main-container">
                <ul id="menu-main" class="nav-menu">
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/">Home</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/archives">Archives</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/shigure">Shigure</a></li>
                
                </ul>
            </div>
    </nav>
</header>

      <div id="main" class="wrapper">
        <div id="primary" class="site-content"><div id="content" role="main">
  
    <article id="post-conceptual-model" class="post-conceptual-model post type-post status-publish format-standard hentry">
    <!---->

      <header class="entry-header">
        
        
  
    <h1 class="entry-title">
      <a class="article-title" href="/2019/11/11/conceptual-model/">conceptual-model</a>
    </h1>
  

        
        <div class="comments-link">
            
            <a href="javascript:void(0);" data-url="http://yoursite.com/2019/11/11/conceptual-model/" data-id="ck2tq8uri0007sj77d7f3jxcp" class="leave-reply bdsharebuttonbox" data-cmd="more">Share</a>
        </div><!-- .comments-link -->
      </header><!-- .entry-header -->

    <div class="entry-content">
      
        
      
    </div><!-- .entry-content -->

    <footer class="entry-meta">
    <a href="/2019/11/11/conceptual-model/">
    <time datetime="2019-11-11T00:24:32.000Z" class="entry-date">
        2019-11-11
    </time>
</a>
    
    
    </footer>
</article>






  
    <article id="post-ubuntu-install" class="post-ubuntu-install post type-post status-publish format-standard hentry">
    <!---->

      <header class="entry-header">
        
        
  
    <h1 class="entry-title">
      <a class="article-title" href="/2019/09/01/ubuntu-install/">Windows 10 &amp; Linux 的艰难历程</a>
    </h1>
  

        
        <div class="comments-link">
            
            <a href="javascript:void(0);" data-url="http://yoursite.com/2019/09/01/ubuntu-install/" data-id="ck2tq8ut80018sj7777dk4534" class="leave-reply bdsharebuttonbox" data-cmd="more">Share</a>
        </div><!-- .comments-link -->
      </header><!-- .entry-header -->

    <div class="entry-content">
      
        <h1 id="0-前言"><a href="#0-前言" class="headerlink" title="0.前言"></a>0.前言</h1><p>近日，由于大数据的学习需要，我于 Surface Pro 5 安装了 Ubuntu 的双系统，使用良好的情况下我决定在我的主力机神舟笔记本上安装Ubuntu的双系统。<br>众所周知Linux对各种台式机要更友好，因为涉及到了各种驱动的问题。但让我万万没有想到是如此地艰难。</p>
<h1 id="1-Surface-Linux"><a href="#1-Surface-Linux" class="headerlink" title="1.Surface-Linux"></a>1.Surface-Linux</h1><p>做为微软的亲儿子，我本以为会很难操作，却没想到安装会是如此丝滑。</p>
<blockquote>
<p><a href="https://www.jianshu.com/p/3d74e90af751" target="_blank" rel="noopener">在 Surface book 上安装、配置和卸载 Ubuntu16.04</a></p>
</blockquote>
<p>在此教程下我顺利地安装了 Ubuntu 18.04.4 LTS 。这是最新的 LTS 版本，对各种的驱动支持也更为良好。<br>总结为：</p>
<ol>
<li>关闭 Secure Boot。</li>
<li>制作 U 盘启动映像。</li>
<li>根据自己的需求选择安装。<br>然后重启就能进入 grub 的选择界面。</li>
</ol>
<p>顺便说一句，Ubuntu 的自动分配盘的挂载很好用，只需要在安装前压缩一个你需求大小的未分配的盘，安装界面选择 “与 Window 共存” 就行了。</p>
<blockquote>
<p><a href="https://www.appkg.com/20045.html" target="_blank" rel="noopener">surface go 双系统折腾记</a></p>
</blockquote>
<blockquote>
<p><a href="https://github.com/jakeday/linux-surface" target="_blank" rel="noopener">Linux-Surface</a></p>
</blockquote>
<p>此篇文章中提到了关于 Surface 驱动解决的方案，但我却只从中学到安装 MacOS 主题（笑）。</p>
<h1 id="2-Hasee-Linux"><a href="#2-Hasee-Linux" class="headerlink" title="2.Hasee-Linux"></a>2.Hasee-Linux</h1><p>本以为蓝天公模的神舟笔记本也会入 Surface 这般顺利。。。。。。。（卒）</p>
<h3 id="2-1-Uefi-amp-Legacy"><a href="#2-1-Uefi-amp-Legacy" class="headerlink" title="2.1 Uefi &amp; Legacy"></a>2.1 Uefi &amp; Legacy</h3><p>我没想到神舟使用的是 Leagcy 引导，在 Ultraiso 制作启动盘默认使用 USB-HDD+ 的写入方式下会出现 “failed to load ldlinux.c32” 错误。<br>此时要重新制作并采用 RAW 方式写入。</p>
<blockquote>
<p>使用 RAW 写入后U盘会显示为 2Mb 的存储大小，此需要重新对U盘分区。</p>
</blockquote>
<blockquote>
<p><a href="https://blog.csdn.net/chen134225/article/details/84874287" target="_blank" rel="noopener">Linux系统重装U盘启动出现“Failed to load ldlinux.c32”解决办法</a></p>
</blockquote>
<h3 id="2-2-安装过程中卡死"><a href="#2-2-安装过程中卡死" class="headerlink" title="2.2 安装过程中卡死"></a>2.2 安装过程中卡死</h3><p>此时可能在安装前报错 “unable to find a medium containing a live file system”，也可能在装中卡死。</p>
<blockquote>
<p><a href="https://blog.csdn.net/yiboo/article/details/82924080" target="_blank" rel="noopener">安装 Ubuntu 遇到 unable to find a medium containing a live file system 解决方案</a></p>
</blockquote>
<p>基本是由于显卡驱动引起的，安装前<em>按E</em>修改启动参数禁用开源驱动 nouveau 就行了。</p>
<h3 id="2-3-安装完没有-grub"><a href="#2-3-安装完没有-grub" class="headerlink" title="2.3 安装完没有 grub"></a>2.3 安装完没有 grub</h3><p>在 EasyBCD 里面新建 Linux 的引导，选择 Grub2 就可以了，再重启就有可以进入 Ubuntu 了，并且对 Windows 没影响。<br>Add new Entry—Linux/BSD—Type 选 GRUB2—ADD Entry, 窗口下面显示成功就好了，或者左边 View Settings 里面有 Entry#2–NeoSmart Linux 就好了，重启选这个选项。</p>

      
    </div><!-- .entry-content -->

    <footer class="entry-meta">
    <a href="/2019/09/01/ubuntu-install/">
    <time datetime="2019-09-01T01:07:59.000Z" class="entry-date">
        2019-09-01
    </time>
</a>
    
  <span class="article-delim">&#8226;</span>
  <div class="article-category">
  <a class="article-category-link" href="/categories/TOOL/">TOOL</a>
  </div>

    
  <span class="article-delim">&#8226;</span>
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/linux/">linux</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/windows/">windows</a></li></ul>

    </footer>
</article>






  
    <article id="post-2017gdp-rank" class="post-2017gdp-rank post type-post status-publish format-standard hentry">
    <!---->

      <header class="entry-header">
        
        
  
    <h1 class="entry-title">
      <a class="article-title" href="/2019/06/23/2017gdp-rank/">2017 世界主要国家和地区 GDP 排名</a>
    </h1>
  

        
        <div class="comments-link">
            
            <a href="javascript:void(0);" data-url="http://yoursite.com/2019/06/23/2017gdp-rank/" data-id="ck2tq8uqx0000sj77fq2mtp1s" class="leave-reply bdsharebuttonbox" data-cmd="more">Share</a>
        </div><!-- .comments-link -->
      </header><!-- .entry-header -->

    <div class="entry-content">
      
        <h1 id="0-前言"><a href="#0-前言" class="headerlink" title="0.前言"></a>0.前言</h1><p>在过去的一年，世界各国的经济表现如何？总的来说，一片欣欣向荣，大多数国家都取得了近五年最好的经济增速，但因为与美元汇率的变化，各国经济表现各异。</p>
<p><img src="/2019/06/23/2017gdp-rank/1.png" alt="1"><br><em>利用Tableau进行地图可视化</em></p>
<p><img src="/2019/06/23/2017gdp-rank/2.png" alt="2"><br><em>鼠标悬停至国家所处位置点时可查看该国家16、17年GDP、人口、GDP增速等信息</em></p>
<h1 id="1-美国-GDP-突破-19-万亿美元"><a href="#1-美国-GDP-突破-19-万亿美元" class="headerlink" title="1.美国 GDP 突破 19 万亿美元"></a>1.美国 GDP 突破 19 万亿美元</h1><p>美国 GDP 达 19.36 万亿美元，直逼 20 万亿，有望成为人类有史以来第一个突破 20 万亿美元的国家。美国名义增速为 4.27%，表现稳健，为近三年来最高增速。</p>
<p><img src="/2019/06/23/2017gdp-rank/3.png" alt="3"></p>
<h1 id="2-中国-GDP-突破-12-万亿美元"><a href="#2-中国-GDP-突破-12-万亿美元" class="headerlink" title="2.中国 GDP 突破 12 万亿美元"></a>2.中国 GDP 突破 12 万亿美元</h1><p>中国 2017 年 GDP 为 12.24 万亿美元，因为使用的是 2017 年平均汇率，所以比预想的低一些。现在美元对人民币已经跌至 6.3 左右，不出意外，2018 年中国美元名义 GDP 会暴增 1.5-2 万亿美元，有可能跳过 13 万亿直接到达 14 万亿美元。</p>
<p>中国人均 GDP 达到 8800 美元，与墨西哥（9364 美元）、俄罗斯（9996 美元）、马来西亚（9938 美元）、土耳其（10515 美元）差距不大了，不出意外，中国 2018 年人均 GDP 会超过 1 万美元，达到低级发达国家水平。泰国（6358 美元）、南非（6154 美元）等中国曾经仰望的存在，现在已经被中国甩远。</p>
<p><img src="/2019/06/23/2017gdp-rank/4.png" alt="4"></p>
<h1 id="3-日本美元-GDP-可能会下降"><a href="#3-日本美元-GDP-可能会下降" class="headerlink" title="3.日本美元 GDP 可能会下降"></a>3.日本美元 GDP 可能会下降</h1><p>日本 GDP 今年预计为 4.88 万亿美元，比去年略有下降。日本在 4-5 万亿美元已经徘徊了 20 多年，目前还无法取得突破，似乎有点可怜。</p>
<p><img src="/2019/06/23/2017gdp-rank/5.png" alt="5"></p>
<h1 id="4-印度-GDP-达到-2-4-万亿美元"><a href="#4-印度-GDP-达到-2-4-万亿美元" class="headerlink" title="4.印度 GDP 达到 2.4 万亿美元"></a>4.印度 GDP 达到 2.4 万亿美元</h1><p>印度 2017 年经济增速比 2016 年略有放缓，增速被中国反超。印度经济目前的问题还是比较多的，首先是太过于依赖服务业，这对于一个发展中国家来说并非好事。印度软件业近年出现下滑趋势，据说主要问题是印度的软件工程师整体素质较低，编写的程序效率低下，雇主满意度不高，软件总收入降低。印度前几年大呼小叫的 “印度制造” 计划现在看来也是雷声大雨点小，没有达到预期。主要问题是，印度的投资环境不理想，外国资本更喜欢投向印度的互联网产业，而非制造业。</p>
<p>不过全球主流媒体依然看好印度经济，认为今年印度经济增速会超过中国，并在 2020 年前超过英国和法国。2017 年印度和英法的 GDP 差距不到 1500 亿美元，看来印度确实很快就会成为世界第五大经济体！</p>
<p><img src="/2019/06/23/2017gdp-rank/6.png" alt="6"></p>
<h1 id="5-韩国人均-GDP-即将突破-3-万美元"><a href="#5-韩国人均-GDP-即将突破-3-万美元" class="headerlink" title="5.韩国人均 GDP 即将突破 3 万美元"></a>5.韩国人均 GDP 即将突破 3 万美元</h1><p>作为世界最年轻的发达国家，韩国人均 GDP 近年出现了较快增长，2017 年韩国人均 GDP 可能会达到 2.98 万美元，与 3 万美元近在咫尺。3 万美元通常被看作是高度发达国家的标准线，过了这条线，就算是真正跻身世界发达国家之列了。即使是西欧的西班牙、葡萄牙目前都没达到 3 万美元，韩国确实做的不错。与之相比，曾经比韩国富裕很多的中国台湾省人均 GDP 刚达到 2.4 万美元。而且这 2.4 万美元还有很大水分，据说台湾省把许多岛外产值都计入了本省。据小编推测，台湾实际的人均 GDP 应该在 1.5 万美元左右，这从台湾和韩国的工资水平可以看出来。韩国本科毕业生起薪一般在 1.6 万人民币左右，而台湾只有 5000 人民币。</p>
<p><img src="/2019/06/23/2017gdp-rank/7.png" alt="7"></p>
<h1 id="6-亚洲主要国家和地区人均-GDP-排名"><a href="#6-亚洲主要国家和地区人均-GDP-排名" class="headerlink" title="6.亚洲主要国家和地区人均 GDP 排名"></a>6.亚洲主要国家和地区人均 GDP 排名</h1><p>中国澳门 8.3 万美元、卡塔尔 6.47 万美元、新加坡 5.45 万美元、中国香港 4.5 万美元、阿联酋 4.08 万美元、韩国 2.98 万美元、文莱 2.8 万美元、中国台湾 2.4 万美元、沙特 2.08 万美元、马来西亚 9900 美元、中国 8800 美元、泰国 6300 美元、印尼 3888 美元、越南 2330 美元、印度 1848 美元</p>
<p><img src="/2019/06/23/2017gdp-rank/8.png" alt="8"></p>
<blockquote>
<p>原帖：<a href="https://www.sohu.com/a/220355035_100028279" target="_blank" rel="noopener">2017 世界主要国家和地区 GDP 排名，美国 GDP 达 19.36 万亿美元 </a></p>
</blockquote>

      
    </div><!-- .entry-content -->

    <footer class="entry-meta">
    <a href="/2019/06/23/2017gdp-rank/">
    <time datetime="2019-06-23T01:06:46.000Z" class="entry-date">
        2019-06-23
    </time>
</a>
    
  <span class="article-delim">&#8226;</span>
  <div class="article-category">
  <a class="article-category-link" href="/categories/TOOL/">TOOL</a>
  </div>

    
  <span class="article-delim">&#8226;</span>
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/tableau/">tableau</a></li></ul>

    </footer>
</article>






  
    <article id="post-当前云平台发展现状" class="post-当前云平台发展现状 post type-post status-publish format-standard hentry">
    <!---->

      <header class="entry-header">
        
        
  
    <h1 class="entry-title">
      <a class="article-title" href="/2019/06/09/当前云平台发展现状/">当前云平台发展现状</a>
    </h1>
  

        
        <div class="comments-link">
            
            <a href="javascript:void(0);" data-url="http://yoursite.com/2019/06/09/当前云平台发展现状/" data-id="ck2tq8utd001gsj77mbyj4stq" class="leave-reply bdsharebuttonbox" data-cmd="more">Share</a>
        </div><!-- .comments-link -->
      </header><!-- .entry-header -->

    <div class="entry-content">
      
        <h1 id="0-前言"><a href="#0-前言" class="headerlink" title="0.前言"></a>0.前言</h1><p>转向云计算（cloud computing），是业界将要面临的一个重大改变。各种云平台（cloud platforms）的出现是该转变的最重要环节之一。<br>顾名思义，这种平台允许开发者们或是将写好的程序放在 “云” 里运行，或是使用 “云” 里提供的服务，或二者皆是。<br>至于这种平台的名称，现在我们可以听到不止一种称呼，比如按需平台（on-demand platform）、平台即服务（platform as a service，PaaS）等等。<br>但无论称呼它什么，这种新的支持应用的方式有着巨大的潜力。 应用平台（application platforms）是如何被使用的。<br>开发团队在创建一个户内应用（on-premises application，即在机构内运行的应用）时，该应用所需的许多基础都已经事先存在了：操作系统为执行应用和访问存储等提供了基础支持；<br>机构里的其他计算机提供了诸如远程存储之类的服务。倘若每创建一个户内应用都得首先构建所有这些基础的话，那么恐怕我们今天看到的应用会少很多。</p>
<p>在云平台的竞争，阿里云、腾讯云、华为云表现优异，本文选取这三个云平台进行分析。</p>
<p>在行业内，大家对三家有些比较常见的看法：<br>阿里云在网络应用综合处理方面非常出色。<br>腾讯云擅长网络游戏和即时通讯。<br>而华为云在云计算底层基础设施方面功力深厚。</p>
<h1 id="1-服务器准备"><a href="#1-服务器准备" class="headerlink" title="1.服务器准备"></a>1.服务器准备</h1><h3 id="阿里云"><a href="#阿里云" class="headerlink" title="阿里云"></a>阿里云</h3><p>阿里云有<a href="https://promotion.aliyun.com/ntms/act/campus2018.html" target="_blank" rel="noopener">云翼计划</a>，对学生比较友好。</p>
<blockquote>
<p>24 岁以下自动获得学生身份 || CPU 性能不限</p>
</blockquote>
<p><img src="/2019/06/09/当前云平台发展现状/a.png" alt="a"><br><em>可以低价购买学习技术课程和服务器。</em></p>
<h5 id="相对优势："><a href="#相对优势：" class="headerlink" title="相对优势："></a>相对优势：</h5><ul>
<li>安全稳定性较强，布局全球，行业内规模最大，针对高并发、高流量数据处理上有独特优势</li>
<li>针对各行业业务特性，打造个性化行业解决方案，为用户提供一站式的产品与服务</li>
<li>阿里云 CDN 覆盖全球 六大洲 ，30 多个国家，1000+ 全球节点，覆盖面广，产品知名度高</li>
<li>针对高并发、高流量数据处理能力非常强，用户对淘宝、天猫等电子商务网站的使用感受一定程度影响对阿里云服务的信赖</li>
<li>发展早，技术领先，安全稳定性较强，布局全球，行业内规模最大</li>
</ul>
<h3 id="腾讯云"><a href="#腾讯云" class="headerlink" title="腾讯云"></a>腾讯云</h3><p>腾讯云也有学生相关活动，但有限量，且限制较多。</p>
<blockquote>
<p><a href="https://cloud.tencent.com/act/campus/" target="_blank" rel="noopener">https://cloud.tencent.com/act/campus/</a></p>
</blockquote>
<p><img src="/2019/06/09/当前云平台发展现状/b.png" alt="b"><br><em>官网活动多样，有各种免费体验产品及特惠域名等活动</em></p>
<h5 id="相对优势：-1"><a href="#相对优势：-1" class="headerlink" title="相对优势："></a>相对优势：</h5><ul>
<li>在游戏、视频、移动应用等行业有 “持续在线，非常稳定” 的优势</li>
<li>在国内率先使用英特尔下一代至强 ® 处理器 Skylake，推出国内最新一代云服务器</li>
<li>腾讯云针对微信小程序接口使用专属 BGP 链路，通过腾讯内网进行通信，实现云端与微信平台的无缝对接，保证了用户云端数据与接口数据的高速互联，为客户提供运营支持</li>
<li>游戏、视频、移动应用等行业有最好的稳定性保障</li>
</ul>
<h3 id="华为云"><a href="#华为云" class="headerlink" title="华为云"></a>华为云</h3><p>华为云致力于为企业提供稳定可靠、安全可信、可持续创新的云服务，暂无学生专属优惠，但有个人免费试用：</p>
<blockquote>
<p><a href="https://activity.huaweicloud.com/free_test/index.html" target="_blank" rel="noopener">https://activity.huaweicloud.com/free_test/index.html</a></p>
</blockquote>
<p><img src="/2019/06/09/当前云平台发展现状/c.png" alt="c"><br><em>专注于云计算底层基础设施甚至有企业免费服务器</em></p>
<h5 id="相对优势：-2"><a href="#相对优势：-2" class="headerlink" title="相对优势："></a>相对优势：</h5><ul>
<li>30 多年在 ICT 基础设施领域的技术积累</li>
<li>全球基础设施，华为云全球数据中心和产品服务部署</li>
<li>全球安全认证，稳定可靠的基础设施</li>
<li>领先全栈全场景 AI 10 + 行业 / 300+AI 项目实践</li>
<li>为客户提供解决方案，华为云助力客户实现业务创新</li>
</ul>
<h1 id="2-云计算"><a href="#2-云计算" class="headerlink" title="2.云计算"></a>2.云计算</h1><p>本次测试选用的是可以跨平台使用的 <a href="https://www.geekbench.com/" target="_blank" rel="noopener">Geekbench</a> 测试工具。<br>在测试中选用的均是 Intel 全新一代 Xeon SkyLake CPU。阿里云的 CPU 型号为 8163、华为云为 6151、腾讯云的 6133（均为 Intel 的定制型号）。<br>在云主机配置上，一致选用的是 4 核 16G 内存。</p>
<p><img src="/2019/06/09/当前云平台发展现状/1.png" alt="1"><br><em>Geekbench 测试结果</em></p>
<p>Geekbench 是通过一系列数据加密、数据压缩、图像压缩、图形计算、脚本处理和路径计算的方式，对 CPU 的整数类型计算能力进行测试，并通过期权价格模似、图像的生成、锐化和模糊以及物理仿真、3D 几何场景描述类的浮点计算功能对 CPU 的浮点计算能力进行测试。并将各个测试结果综合后，统一对 CPU 的整数计算和浮点计算能力进行打分。通过 CPU 综合性能对比，在单核 CPU 的整数和浮点计算能力对比中，阿里云和腾讯云的 CPU 计算能力相差不大，华为云 CPU 在整数和浮点计算能力上明显比阿里云和腾讯高出 17% 和 14.8%。而在多核 CPU 整数和浮点计算能力中，阿里云的计算能力差距与华为云和腾讯云明显加大。华为云四核整数和浮点计算性能综合打分成绩分别为 14618 和 13717，基本上接近其单核 CPU 整数和浮点计算能力的四倍，腾讯云四核计算性能其次为 12357 和 11898 基本上也接其单核 CPU 整数和浮点计算能力的四倍。但是阿里云四核的整数和浮点性能仅为 7672 和 7405，仅比单核 CPU 整数和浮点计算能力的两倍略多一些。</p>
<p><img src="/2019/06/09/当前云平台发展现状/2.png" alt="2"><br><em>Geekbench 整数测试分类线图</em></p>
<p><img src="/2019/06/09/当前云平台发展现状/3.png" alt="3"><br><em>Geekbench 浮点测试分类线图</em></p>
<h1 id="3-内存"><a href="#3-内存" class="headerlink" title="3.内存"></a>3.内存</h1><p>总的来说，内存性能方面华为云云主机的存储带宽性能最好，腾讯云的云主机为次，双方有大约 5% 左右的性能差距。<br>但是阿里云的内存带宽性能就与其它两个云主机有着很大差距，与成绩最好的华为云相比，有着接近一倍的性能差距。<br>内存的调用和数据处理性能，是云计算处理能力的一个重要测试指标。我选用了 Stream 工具，并利用 64M 的大页面来对这三个公有云平台（依然是四核 16G 云主机的内存带宽）进行了测试。<br>Stream 在对内存带宽进行测试的时候会进行四种操作：Copy、Scale、Add、Triad。<br>Copy，先访问一个内存单元读出其中的值，再将值写入到另一个内存单元。<br>Scale，从内存单元读出其中的值，作一个乘法运算，再将结果写入到另一个内存单元。<br>Add，从内存单元读出两个值，做加法运算，再将结果写入到另一个内存单元。<br>Triad，是将上面三个操作组合起来。</p>
<p><img src="/2019/06/09/当前云平台发展现状/4.png" alt="4"><br><em>上图是上述几项的表现</em></p>
<p>从理论上讲，Add 操作简单且访问内存次数多，带宽测试成绩应最好，华为云和腾讯云的带宽性能也和理论比较符合，但是阿里云的云主机反而是运算需求最少的 Copy 操作时成绩最好，而一但有计算操作介入后的内存带宽均有显著下降。<br>是计算处理能力问题影响了内存的带宽性能还是存在着其它源因，现在还无法更多的去进行分析。<br>只能怀疑内存带宽性能偏低与多核 CPU 运算性能不足有一定相关性存在。</p>
<h1 id="4-网络"><a href="#4-网络" class="headerlink" title="4.网络"></a>4.网络</h1><p>网络性能方面，本项测试的头筹依然被华为云所夺取。</p>
<p><img src="/2019/06/09/当前云平台发展现状/6.png" alt="6"><br><em>公有云网络和网络应用性能测试结果</em></p>
<p>从网络性能的测试成绩来看，华为云充分继承了其网络技术起家的优良传统，但是正如上次网络和网络应用测试中所分析的一样，在正常网络应用中很少会出现如此高的网络应用需求，<br>如此高的网络性能配置是否会带来云计算系统资源的浪费还有待去更深入的进行了解。通常网络应用中的数据包转发速率在每 10Mbps 带宽下提供 2KPPS 左右的数据包转发速率基本上就可以满足绝大部分的应用需求了。<br>因此阿里云和腾讯云在网络层的转发性能目前是完全可以满足正常网络的应用，并留有了一定的转发性能余量了。<br>当然对于云主机的用户而言，同样的价格区间内，更高更好的网络性能也完全是喜闻乐见的一个事情，同时随着高并发应用的增加，对网络层的转发性能的要求也在不断提升。<br>通过这次云主机基础性能测试，我们可以看到华为云可谓 “后来者居上”。但是在网络性能方面，过高的性能配置是否会造成整体资源的浪费还有待进一步了解。</p>

      
    </div><!-- .entry-content -->

    <footer class="entry-meta">
    <a href="/2019/06/09/当前云平台发展现状/">
    <time datetime="2019-06-09T02:50:29.000Z" class="entry-date">
        2019-06-09
    </time>
</a>
    
  <span class="article-delim">&#8226;</span>
  <div class="article-category">
  <a class="article-category-link" href="/categories/TOOL/">TOOL</a>
  </div>

    
  <span class="article-delim">&#8226;</span>
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/cloud-platforms/">cloud platforms</a></li></ul>

    </footer>
</article>






  
    <article id="post-Java-Filter" class="post-Java-Filter post type-post status-publish format-standard hentry">
    <!---->

      <header class="entry-header">
        
        
  
    <h1 class="entry-title">
      <a class="article-title" href="/2019/06/03/Java-Filter/">JavaWeb Filter 实现登录注册过滤</a>
    </h1>
  

        
        <div class="comments-link">
            
            <a href="javascript:void(0);" data-url="http://yoursite.com/2019/06/03/Java-Filter/" data-id="ck2tq8ur40002sj77ux7iluyq" class="leave-reply bdsharebuttonbox" data-cmd="more">Share</a>
        </div><!-- .comments-link -->
      </header><!-- .entry-header -->

    <div class="entry-content">
      
        <h1 id="0-环境准备"><a href="#0-环境准备" class="headerlink" title="0.环境准备"></a>0.环境准备</h1><p>本文基于下文，使用 IDEA 调试：</p>
<blockquote>
<p>JavaWeb MySQL 实现登录验证:<a href="https://eslsuwen.github.io/2019/06/03/Java-Login/" target="_blank" rel="noopener">https://eslsuwen.github.io/2019/06/03/Java-Login/</a></p>
</blockquote>
<h1 id="1-项目修改"><a href="#1-项目修改" class="headerlink" title="1.项目修改"></a>1.项目修改</h1><h3 id="修改-login-jsp，使其能传递注册消息"><a href="#修改-login-jsp，使其能传递注册消息" class="headerlink" title="修改 login.jsp，使其能传递注册消息"></a>修改 login.jsp，使其能传递注册消息</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- contact-form --&gt;</span><br><span class="line">&lt;div class=&quot;message warning&quot;&gt;</span><br><span class="line">    &lt;div class=&quot;inset&quot;&gt;</span><br><span class="line">        &lt;div class=&quot;login-head&quot;&gt;</span><br><span class="line">            &lt;h1&gt;请先登录&lt;/h1&gt;</span><br><span class="line">            &lt;div class=&quot;alert-close&quot;&gt;&lt;/div&gt;</span><br><span class="line">        &lt;/div&gt;</span><br><span class="line">        &lt;form action=&quot;login&quot; method=&quot;POST&quot; name=&quot;login&quot;&gt;</span><br><span class="line">            &lt;li&gt;</span><br><span class="line">                &lt;input type=&quot;text&quot; class=&quot;text&quot; name=&quot;username&quot; value=&quot;username&quot; onfocus=&quot;this.value = &apos;&apos;;&quot;</span><br><span class="line">                       onblur=&quot;if (this.value == &apos;&apos;) &#123;this.value = &apos;用户名&apos;;&#125;&quot;&gt;&lt;a href=&quot;#&quot; class=&quot; icon user&quot;&gt;&lt;/a&gt;</span><br><span class="line">            &lt;/li&gt;</span><br><span class="line">            &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;</span><br><span class="line">            &lt;li&gt;</span><br><span class="line">                &lt;input type=&quot;password&quot; name=&quot;password&quot; value=&quot;password&quot; onfocus=&quot;this.value = &apos;&apos;;&quot;</span><br><span class="line">                       onblur=&quot;if (this.value == &apos;&apos;) &#123;this.value = &apos;Password&apos;;&#125;&quot;&gt; &lt;a href=&quot;#&quot; class=&quot;icon lock&quot;&gt;&lt;/a&gt;</span><br><span class="line">            &lt;/li&gt;</span><br><span class="line">            &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;</span><br><span class="line">            &lt;div class=&quot;submit&quot;&gt;</span><br><span class="line">                &lt;input type=&quot;submit&quot; value=&quot;登录&quot;&gt;</span><br><span class="line">                &lt;input type=&quot;submit&quot; value=&quot;注册&quot; name=&quot;isSignUp&quot;&gt;</span><br><span class="line">                &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;</span><br><span class="line">            &lt;/div&gt;</span><br><span class="line"></span><br><span class="line">        &lt;/form&gt;</span><br><span class="line">    &lt;/div&gt;</span><br><span class="line">&lt;/div&gt;</span><br></pre></td></tr></table></figure>
<h3 id="修改-login-servlet-使其能接收注册消息"><a href="#修改-login-servlet-使其能接收注册消息" class="headerlink" title="修改 login servlet, 使其能接收注册消息"></a>修改 login servlet, 使其能接收注册消息</h3><ul>
<li>先判断注册消息</li>
<li>再验证登录信息</li>
<li>成功登录后通过 session 将登录状态改为 true</li>
<li>验证失败发送提示消息，并跳转回 login.jsp 页面</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br></pre></td><td class="code"><pre><span class="line">protected void doPost(HttpServletRequest request, HttpServletResponse response)</span><br><span class="line">            throws ServletException, IOException &#123;</span><br><span class="line">        // 设置编码格式，可以防止乱码出现</span><br><span class="line">        response.setContentType(&quot;text/html; charset=utf-8&quot;);</span><br><span class="line">        response.setCharacterEncoding(&quot;utf-8&quot;);</span><br><span class="line">        request.setCharacterEncoding(&quot;utf-8&quot;);</span><br><span class="line">        // 获取用户提交过来的用户名和密码，是通过表单中input的name属性获取的</span><br><span class="line">        String username = request.getParameter(&quot;username&quot;);</span><br><span class="line">        String password = request.getParameter(&quot;password&quot;);</span><br><span class="line">        String isSignUp = request.getParameter(&quot;isSignUp&quot;);</span><br><span class="line">        PrintWriter out = response.getWriter();</span><br><span class="line">        System.out.println(username + &quot;: &quot; + password + &quot; isSignUp: &quot; + isSignUp);</span><br><span class="line">        // 获取输出流，用户显示信息，也可以用转发或者重定向</span><br><span class="line">        PrintWriter pw = response.getWriter();</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        //注册验证</span><br><span class="line">        if (&quot;注册&quot;.equals(isSignUp)) &#123;</span><br><span class="line">            try &#123;</span><br><span class="line">                JdbcOp jdbc = new JdbcOp();</span><br><span class="line">                jdbc.open(&quot;usersdb&quot;);</span><br><span class="line">                ResultSet rs = jdbc.executeQuery(&quot;select * from users&quot;);</span><br><span class="line"></span><br><span class="line">                while (rs.next()) &#123;</span><br><span class="line">                    String nm = rs.getString(&quot;name&quot;);</span><br><span class="line">                    String pd = rs.getString(&quot;password&quot;);</span><br><span class="line">                    System.out.println(&quot;username: &quot; + nm + &quot; password: &quot; + pd);</span><br><span class="line"></span><br><span class="line">                    if (nm.equals(username)) &#123;</span><br><span class="line">                        out.print(&quot;&lt;script language=&apos;javascript&apos;&gt;alert(&apos;该账户已存在！请重新注册！&apos;);window.location.href=&apos;test.jsp&apos;;&lt;/script&gt;&quot;);</span><br><span class="line">                        out.flush();</span><br><span class="line">                        out.close();</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line">                //进行注册操作</span><br><span class="line">                int i = jdbc.executeUpdate(&quot;insert into users values(&apos;&quot; + username + &quot;&apos;,&apos;&quot; + password + &quot;&apos;)&quot;);</span><br><span class="line">                System.out.println(i);</span><br><span class="line">                if (i == 0) &#123;</span><br><span class="line">                    out.print(&quot;&lt;script language=&apos;javascript&apos;&gt;alert(&apos;账户创建失败！请重新注册！&apos;);window.location.href=&apos;index.jsp&apos;;&lt;/script&gt;&quot;);</span><br><span class="line">                    out.flush();</span><br><span class="line">                    out.close();</span><br><span class="line">                &#125; else &#123;</span><br><span class="line">                    out.print(&quot;&lt;script language=&apos;javascript&apos;&gt;alert(&apos;该账号已成功注册！请牢记密码！&apos;);window.location.href=&apos;test.jsp&apos;;&lt;/script&gt;&quot;);</span><br><span class="line">                    out.flush();</span><br><span class="line">                    out.close();</span><br><span class="line">                &#125;</span><br><span class="line">                jdbc.close();</span><br><span class="line">            &#125; catch (Exception e) &#123;</span><br><span class="line">                e.printStackTrace();</span><br><span class="line">            &#125;</span><br><span class="line"></span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            //登录验证</span><br><span class="line">            try &#123;</span><br><span class="line">                JdbcOp jdbc = new JdbcOp();</span><br><span class="line">                jdbc.open(&quot;usersdb&quot;);</span><br><span class="line">                ResultSet rs = jdbc.executeQuery(&quot;select * from users&quot;);</span><br><span class="line"></span><br><span class="line">                while (rs.next()) &#123;</span><br><span class="line">                    String nm = rs.getString(&quot;name&quot;);</span><br><span class="line">                    String pd = rs.getString(&quot;password&quot;);</span><br><span class="line">                    System.out.println(&quot;username: &quot; + nm + &quot; password: &quot; + pd);</span><br><span class="line"></span><br><span class="line">                    if (nm.equals(username) &amp;&amp; pd.equals(password)) &#123;</span><br><span class="line">                        HttpSession session = request.getSession();</span><br><span class="line">                        //将数据存储到session中</span><br><span class="line">                        session.setAttribute(&quot;isLogin&quot;, &quot;true&quot;);</span><br><span class="line">                        session.setAttribute(&quot;username&quot;, username);</span><br><span class="line"></span><br><span class="line">                        out.print(&quot;&lt;script language=&apos;javascript&apos;&gt;alert(&apos;You login successful  ! 你已成功登录！out.print&apos;);window.location.href=&apos;test.jsp&apos;;&lt;/script&gt;&quot;);</span><br><span class="line">                        out.flush();</span><br><span class="line">                        out.close();</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line">                jdbc.close();</span><br><span class="line">            &#125; catch (Exception e) &#123;</span><br><span class="line">                e.printStackTrace();</span><br><span class="line">            &#125;</span><br><span class="line">            pw.write(&quot;login fail&quot;);</span><br><span class="line">            out.print(&quot;&lt;script language=&apos;javascript&apos;&gt;alert(&apos;please login first 登陆信息输入有误！&apos;);window.location.href=&apos;index.jsp&apos;;&lt;/script&gt;&quot;);</span><br><span class="line">            out.flush();</span><br><span class="line">            out.close();</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure>
<h1 id="3-创建-login-filter-文件"><a href="#3-创建-login-filter-文件" class="headerlink" title="3.创建 login filter 文件"></a>3.创建 login filter 文件</h1><ul>
<li>过滤前先判断是否是需要放行的页面</li>
<li>然后判断登录状态，true 放行，false 强制跳转到 login.jsp</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br></pre></td><td class="code"><pre><span class="line">package login;</span><br><span class="line"></span><br><span class="line">import javax.servlet.*;</span><br><span class="line">import javax.servlet.annotation.WebFilter;</span><br><span class="line">import javax.servlet.http.HttpServletRequest;</span><br><span class="line">import javax.servlet.http.HttpServletResponse;</span><br><span class="line">import javax.servlet.http.HttpSession;</span><br><span class="line">import java.io.IOException;</span><br><span class="line">import java.io.PrintWriter;</span><br><span class="line">import java.net.URLEncoder;</span><br><span class="line"></span><br><span class="line">@WebFilter(filterName = &quot;LoginFilter&quot;, urlPatterns = &quot;/*&quot;)</span><br><span class="line">public class LoginFilter implements Filter &#123;</span><br><span class="line"></span><br><span class="line">    /**</span><br><span class="line">     * 需要排除的页面</span><br><span class="line">     */</span><br><span class="line">    private String excludedPages;</span><br><span class="line">    private String[] excludedPageArray = &#123;&quot;/index.jsp&quot;, &quot;/login.jsp&quot;, &quot;/login&quot;&#125;;</span><br><span class="line"></span><br><span class="line">    public void destroy() &#123;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException &#123;</span><br><span class="line">        HttpServletRequest request = (HttpServletRequest) req;</span><br><span class="line">        HttpServletResponse response = (HttpServletResponse) resp;</span><br><span class="line"></span><br><span class="line">        response.setCharacterEncoding(&quot;UTF-8&quot;);</span><br><span class="line">        response.setContentType(&quot;text/html;charset=UTF-8&quot;);</span><br><span class="line">        //使用request对象的getSession()获取session，如果session不存在则创建一个</span><br><span class="line">        HttpSession session = request.getSession();</span><br><span class="line"></span><br><span class="line">        //获取session的Id</span><br><span class="line">        String sessionId = session.getId();</span><br><span class="line">        //判断session是不是新创建的</span><br><span class="line">        if (session.isNew()) &#123;</span><br><span class="line">            //将数据存储到session中</span><br><span class="line">            session.setAttribute(&quot;isLogin&quot;, &quot;false&quot;);</span><br><span class="line">            response.getWriter().print(&quot;session generate successfully, the ID of session: &quot; + sessionId);</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            response.getWriter().print(&quot;sever has existed the session, the ID of session: &quot; + sessionId);</span><br><span class="line">        &#125;</span><br><span class="line">        Object loginFlag = session.getAttribute(&quot;isLogin&quot;);     //(&quot;isLogin&quot;);</span><br><span class="line">        response.getWriter().print(&quot;  session.isLogin: &quot; + loginFlag);</span><br><span class="line"></span><br><span class="line">        boolean isExcludedPage = false;</span><br><span class="line">        response.getWriter().print(&quot;  current.url=&quot; + request.getServletPath()+&quot; current.user=&quot;+session.getAttribute(&quot;username&quot;));</span><br><span class="line">        for (</span><br><span class="line">                String page : excludedPageArray) &#123;// 判断是否在过滤 url 之外</span><br><span class="line">            if (request.getServletPath().equals(page)) &#123;</span><br><span class="line">                isExcludedPage = true;</span><br><span class="line">                break;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        if (isExcludedPage) &#123;// 在过滤 url 之外</span><br><span class="line">            chain.doFilter(request, response);</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            if (loginFlag == &quot;false&quot;) &#123;</span><br><span class="line">                //没有登录</span><br><span class="line">                PrintWriter out = response.getWriter();</span><br><span class="line">                out.print(&quot;&lt;script language=&apos;javascript&apos;&gt;alert(&apos;Please login first! 请先登录！out.print&apos;);window.location.href=&apos;index.jsp&apos;;&lt;/script&gt;&quot;);</span><br><span class="line">                out.flush();</span><br><span class="line">                out.close();</span><br><span class="line">            &#125;</span><br><span class="line">            chain.doFilter(request, response);</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public void init(FilterConfig config) throws ServletException &#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h1 id="4-调试"><a href="#4-调试" class="headerlink" title="4.调试"></a>4.调试</h1><p>开户 filter 后，访问其他页面会被阻止并返回登录：<br><img src="/2019/06/03/Java-Filter/0.png" alt="0"><br><img src="/2019/06/03/Java-Filter/1.png" alt="1"></p>
<p>成功登录：<br><img src="/2019/06/03/Java-Filter/2.png" alt="2"><br><img src="/2019/06/03/Java-Filter/3.png" alt="3"></p>
<p>登录验证失败：<br><img src="/2019/06/03/Java-Filter/5.png" alt="5"><br><img src="/2019/06/03/Java-Filter/6.png" alt="6"></p>
<p>注册判断用户名是否被占用：<br><img src="/2019/06/03/Java-Filter/2.png" alt="2"><br><img src="/2019/06/03/Java-Filter/4.png" alt="4"></p>
<p>成功注册：<br><img src="/2019/06/03/Java-Filter/7.png" alt="7"><br><img src="/2019/06/03/Java-Filter/8.png" alt="8"></p>
<h1 id="5-附"><a href="#5-附" class="headerlink" title="5.附"></a>5.附</h1><p>完整项目及其他相关资源下载：</p>
<blockquote>
<p><a href="https://github.com/EslSuwen/JavaWeb" target="_blank" rel="noopener">https://github.com/EslSuwen/JavaWeb</a></p>
</blockquote>

      
    </div><!-- .entry-content -->

    <footer class="entry-meta">
    <a href="/2019/06/03/Java-Filter/">
    <time datetime="2019-06-03T02:13:19.000Z" class="entry-date">
        2019-06-03
    </time>
</a>
    
  <span class="article-delim">&#8226;</span>
  <div class="article-category">
  <a class="article-category-link" href="/categories/JAVA企业开发框架/">JAVA企业开发框架</a>
  </div>

    
  <span class="article-delim">&#8226;</span>
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/java/">java</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/mysql/">mysql</a></li></ul>

    </footer>
</article>






  
  
    <nav id="pagination">
      <nav id="page-nav">
        <span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><a class="page-number" href="/page/4/">4</a><a class="extend next" rel="next" href="/page/2/">Next &raquo;</a>
      </nav>
    </nav>
  

</div></div>
        <div id="secondary" class="widget-area" role="complementary">
  
    <aside class="widget">
  <h3 class="widget-title">ABOUT ME</h3>
  <div class="widget-content">
    <p>E-MAIL:esllovesn@gmail.com</p>
    <p>Github: <a href="https://github.com/EslSuwen" target="_blank">EslSuwen</a></p>
    <p>QQ：<a href="tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=577014284&website=www.oicqzone.com" target="_blank">577014284</a></p>
    <a href="tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=577014284&website=www.oicqzone.com" target="_blank"><img src="http://q.qlogo.cn/headimg_dl?bs=qq&dst_uin=577014284&src_uin=www.feifeiboke.com&fid=blog&spec=100" alt="hfl"></a>
    <p><strong>#全栈工程师</strong></p>
    <p>“精通 C++/Java/HTML/CSS/JS 等单词的拼写。”</p>
  </div>
</aside>
  
    
<aside class="widget">
  <h3 class="widget-title">Music</h3>
  <div class="widget-content">
    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="280" height="86" src="//music.163.com/outchain/player?type=2&id=101092&auto=0&height=66"></iframe>
  </div>
</aside>

  
    
  <aside class="widget">
    <h3 class="widget-title">Recents</h3>
    <div class="widget-content">
      <ul>
        
          <li>
            <a href="/2019/11/11/conceptual-model/">conceptual-model</a>
          </li>
        
          <li>
            <a href="/2019/09/01/ubuntu-install/">Windows 10 &amp; Linux 的艰难历程</a>
          </li>
        
          <li>
            <a href="/2019/06/23/2017gdp-rank/">2017 世界主要国家和地区 GDP 排名</a>
          </li>
        
          <li>
            <a href="/2019/06/09/当前云平台发展现状/">当前云平台发展现状</a>
          </li>
        
          <li>
            <a href="/2019/06/03/Java-Filter/">JavaWeb Filter 实现登录注册过滤</a>
          </li>
        
      </ul>
    </div>
  </aside>

  
    
  <aside class="widget">
    <h3 class="widget-title">Categories</h3>
    <div class="widget-content">
      <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/CODE/">CODE</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/DATABASE/">DATABASE</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/JAVA企业开发框架/">JAVA企业开发框架</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/TEST/">TEST</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/TOOL/">TOOL</a><span class="category-list-count">5</span></li></ul>
    </div>
  </aside>

  
    
  <aside class="widget">
    <h3 class="widget-title">Tags</h3>
    <div class="widget-content">
      <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/tags/c/">c++</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/cloud-platforms/">cloud platforms</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/eclipse/">eclipse</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/git/">git</a><span class="tag-list-count">2</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/github/">github</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/java/">java</a><span class="tag-list-count">4</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/jsp/">jsp</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/linux/">linux</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/markdown/">markdown</a><span class="tag-list-count">2</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/mysql/">mysql</a><span class="tag-list-count">4</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/tableau/">tableau</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/test/">test</a><span class="tag-list-count">3</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/vscode/">vscode</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/windows/">windows</a><span class="tag-list-count">1</span></li></ul>
    </div>
  </aside>

  
    
  <aside class="widget">
    <h3 class="widget-title">Tag Cloud</h3>
    <div class="widget-content tagcloud">
      <a href="/tags/c/" style="font-size: 10px;">c++</a> <a href="/tags/cloud-platforms/" style="font-size: 10px;">cloud platforms</a> <a href="/tags/eclipse/" style="font-size: 10px;">eclipse</a> <a href="/tags/git/" style="font-size: 13.33px;">git</a> <a href="/tags/github/" style="font-size: 10px;">github</a> <a href="/tags/java/" style="font-size: 20px;">java</a> <a href="/tags/jsp/" style="font-size: 10px;">jsp</a> <a href="/tags/linux/" style="font-size: 10px;">linux</a> <a href="/tags/markdown/" style="font-size: 13.33px;">markdown</a> <a href="/tags/mysql/" style="font-size: 20px;">mysql</a> <a href="/tags/tableau/" style="font-size: 10px;">tableau</a> <a href="/tags/test/" style="font-size: 16.67px;">test</a> <a href="/tags/vscode/" style="font-size: 10px;">vscode</a> <a href="/tags/windows/" style="font-size: 10px;">windows</a>
    </div>
  </aside>

  
    
  <aside class="widget">
    <h3 class="widget-title">Archives</h3>
    <div class="widget-content">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2019/11/">November 2019</a><span class="archive-list-count">1</span></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2019/09/">September 2019</a><span class="archive-list-count">1</span></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2019/06/">June 2019</a><span class="archive-list-count">6</span></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2019/05/">May 2019</a><span class="archive-list-count">11</span></li></ul>
    </div>
  </aside>

  
    <script>
    // sub title
    var subtitleList = [
        "『卑鄙是卑鄙者的通行证，高尚是高尚者的墓志铭。』——北岛",
        "『所有模型都是错的，但其中一些是有用的。』",
        "『程序员的双手是魔术师的双手，他们把枯燥无味的代码变成了丰富多彩的软件。』——《疯狂的程序员》",
        "『质疑计算机能不能思考，就相当于质疑潜艇能不能游泳。』——Edsger Dijkstra",
        "『人们认为计算机科学是天才的艺术，但是实际情况相反，只是许多人在其它人基础上做一些东西，就像一面由石子垒成的墙。』——高德纳",
        "『Stay young. Stay simple. Always naive!』",
        "『你们媒体千万要记着，不要「见得风，是得雨」。接到消息，你们媒体本身也要判断。』——长者",
        "『假设这些完全无中生有的东西，你再帮他说一遍，你等于......你也有责任吧？』——长者",
        "『刚才你问我啊，我可以回答你一句「无可奉告」。』——长者",
        "『我告诉你们我是身经百战了，见得多了！』——长者",
        "『美国的华莱士，比你们不知要高到哪里去了，我跟他谈笑风生。』——长者",
        "『我有这个必要告诉你们一点，人生的经验。』——长者",
        "『我没有说要钦定，没有任何这个意思。』——长者",
        "『你们啊，不要想喜欢弄个大新闻，说现在已经钦定了，就把我批判一番。』——长者",
        "『一个人的命运啊，当然要靠自我奋斗，但是也要考虑历史的进程。』——长者",
        "『我说另请高明吧，我实在也不是谦虚。』——长者",
        "『苟利国家生死以，岂因祸福避趋之。』——林则徐",
        "『敢同恶鬼争高下，不向霸王让寸分。』——毛泽东",
        "『我生不为逐鹿来，都门懒筑黄金台。状元百官都如狗，总是刀下觳觫材。』——张献忠",
        "『我自成佛自度我，佛度凡尘我度佛。』",
        "『龙吟九天，一曲焚尘；苍山听雪，归时余几人。』",
        "『人最大的痛苦就是说一些自己都不相信的话。』",
        "『燃琴为薪，铸银矢以射白羽；斑音成竹，裁短笛而驭青龙。』",
        "『我们在人生的每个阶段，能影响多少人，就影响多少人，哪怕只能影响一个人，也好过不影响。——罗永浩",
        "『每个人心中都有一个死小孩。』——《龙族II》",
        "『前面是山，我们就爬山；前面是海，我们就渡海；前面是皇宫，我们就开炮！』——《龙族前传》",
        "『不要习惯了黑暗就为黑暗辩护；不要为自己的苟且而得意；不要嘲讽那些比自己更勇敢热情的人们。我们可以卑微如尘土，不可扭曲如蛆虫。』——季业",
        "『若无力驾驭，自由便是负担。",
        "『若能避开猛烈的狂喜，自然不会有悲痛来袭。』  ——太宰治 《人间失格》",


    ];

    document.addEventListener('DOMContentLoaded', evt => {
        var i = Math.floor(Math.random() * subtitleList.length);
        document.querySelector('#subtitle').innerText = subtitleList[i];
    });

    //Kill XP and IE8
    (function(){
        var ua = navigator.userAgent;
        var res = /Windows NT (\d+\.\d+)/.exec(ua);
        var xpOrLower = res && JSON.parse(res[1]) < 6;
        res = /MSIE (\d+\.\d+)/.exec(ua);
        var ie8OrLower = res && JSON.parse(res[1]) < 9;
        if(xpOrLower || ie8OrLower) {
            alert('请不要用XP及之前的Windows系统，和IE8及之前的IE浏览器访问本站！');
            location.href = "about:blank";
        }
        var fromBaiduSE = /^https?:\/\/www.baidu.com/.test(document.referrer);
        if(fromBaiduSE) {
            alert('检测到你还在使用百度搜索，作为一个程序员，这是一种自暴自弃！\n\n做不作恶的程序员，从不用百度开始！');
            location.href = "about:blank";
        }
    })();
</script>
  
</div>
      </div>
      <footer id="colophon" role="contentinfo">
    <p>&copy; 2019 Suwen
    All rights reserved.</p>
    <p>Powered by <a href="http://hexo.io/" target="_blank">Hexo</a></p>
</footer>
    <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"1","bdMiniList":false,"bdPic":"","bdStyle":"2","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='/js/share.js'];</script>

<script src="/js/jquery-3.3.1.min.js"></script>


  <link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
  <script src="/fancybox/jquery.fancybox.pack.js"></script>


<script src="/js/script.js"></script>

<script src="/js/navigation.js"></script>

<div id="bg"></div>

  </div>
<script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"pluginRootPath":"live2dw/","pluginJsPath":"lib/","pluginModelPath":"assets/","tagMode":false,"debug":false,"model":{"jsonPath":"/live2dw/assets/assets/tororo.model.json"},"display":{"position":"right","width":250,"height":400},"mobile":{"show":true},"log":false});</script></body>
</html>